iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Software Development

Laravel專案練習-寶可夢管理系統系列 第 16

Day16:寶可夢專案-寶可夢資料庫的建立-寶可夢資料的儲存-本地or不存

  • 分享至 

  • xImage
  •  

根據我API的設計,比如讓使用者新增寶可夢、判斷寶可夢是否能夠進化, 這些資料可以選擇使用第三方的資料、也可以自己手動輸入,而我是選擇前者。

如何拿到寶可夢相關屬性資料

主要取得資料的網站,我是透過向https://pokeapi.co/docs/v2#pokemon-species該網站, 發請求拿到資料, 他有提供很多的api,主要分成幾個大項:

而我主要是從Pokemon這裡取得寶可夢種族的名稱、技能、照片,然後從Evolution chain拿到進化等級。

向他的api發送請求可能回來的數據像是這樣:

{
    "count": 1292,
    "next": "https://pokeapi.co/api/v2/pokemon/?offset=20&limit=20",
    "previous": null,
    "results": [
        {
            "name": "bulbasaur",
            "url": "https://pokeapi.co/api/v2/pokemon/1/"
        },
        {
            "name": "ivysaur",
            "url": "https://pokeapi.co/api/v2/pokemon/2/"
        },
        {
            "name": "venusaur",
            "url": "https://pokeapi.co/api/v2/pokemon/3/"
        },
        {
            "name": "charmander",
            "url": "https://pokeapi.co/api/v2/pokemon/4/"
        },
        {
            "name": "charmeleon",
            "url": "https://pokeapi.co/api/v2/pokemon/5/"
        },
        {
            "name": "charizard",
            "url": "https://pokeapi.co/api/v2/pokemon/6/"
        },
        {
            "name": "squirtle",
            "url": "https://pokeapi.co/api/v2/pokemon/7/"
        },

有些必須要去了解他回傳的資料格式才能取得資料,比如說進化等級就是一個多維的json格式(後面會再詳細解釋)。

取得方法

這些資料我是要透過一開始存到自己的資料庫,還是就在每次使用者打我們的API,這些相關的資訊我們都在去打對方的API來拿到? 以下是這兩種方法的一些比較:

存在自己的資料庫:

  • 優點:

    • 依賴性較低:

      好處是我不用太依賴於對方的網站的維護情況,只要他不完全關掉。

    • 客制化:可以根據需要更加客制化數據庫,添加或修改資訊,更好地整合到應用中。

      比如說我的種族名稱跟種族進化等級他是不同api取得的資料,既然都是種族資訊,我就可以把它整合到我同一張資料表中。

  • 缺點:

    • 一開始耗時費工:

      一開始的建立可能會比較麻煩、耗時,因為一次建立需要打多次api,怎麼樣去發這些請求是一個問題。

    • 儲存空間的浪費:

      當然以我目前的專案感受不出來, 因為資料量還不是很多, 但如果今天資料量很大, 這有可能會是一個問題。

    • 更新問題

      如果來源網站更新了資料,需要一個機制來更新本地資料庫。如果不定期更新資料庫,可能會提供過時的信息。

每次打對方API:

  • 優點

    • 我不用考慮一次性發大量請求的問題。

    • 不會有佔用自己空間的問題。

    • 即時性

      即時從API取得數據可以保證提供的數據是最新的,不需要擔心數據過時的問題。

  • 缺點

    • 依賴於對方網站狀況的頻率比較高, 因為每一次api要判斷要拿資料都是去打對方api,可能也要確保在自己和第三方的通訊過程都是保持通順的。
    • 整個過程要經過網路,而且返回的資料如果還要進行解析的話,速度基本上不會比你存在本地資料庫來得快。

小結語

這兩種方式我相信在實際情況都有可能會應用到,雖然目前經驗的問題還沒有辦法具體的描述應用場景,所以就先根據各自的優缺點做了一點比較,因為整個取資料的過程及改善比較多內容,所以我打算在接下來的篇章在跟大家分享。


上一篇
Day15:寶可夢專案-虛擬伺服器軟體安裝-https設定-安裝步驟
下一篇
Day17:寶可夢專案-寶可夢資料庫的建立-儲存在本地端的方法-如何發請求、解析數據、儲存
系列文
Laravel專案練習-寶可夢管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言